import QQMapWX from '../../../lib/qqmap-wx-jssdk.min';

Page({
  data: {
    survey: '',
    longitude: '',
    latitude: '',
    address: '',
    markers: []  
  },
  onLoad(options) {
    this.qqmapsdk = new QQMapWX({
      key: 'WLMBZ-CKEKQ-L3Q54-BO7SP-2FQE7-FFBPD'
    });
    this.setData({
      survey: options.type,
    });
    this.getLocation(); // 在页面加载时获取位置
  },
  // 拍照签到->视频流
  switchCamera() {
    const newPos = this.data.devicePos === 'back' ? 'front' : 'back';
    this.setData({ devicePos: newPos });
  },
  takePhoto() {
    const ctx = wx.createCameraContext()
    ctx.takePhoto({
      quality: 'high',
      success: (res) => {
        this.setData({
          src: res.tempImagePath
        })
      }
    })
  },

  // 手势签到
  onEnd(data) {
    this.setData({
      data: data.detail
    });
  },

  // 获取位置信息
  getLocation() {
    const that = this;
    wx.getSetting({
      success(res) {
        if (!res.authSetting['scope.userLocation']) {
          // 如果没有授权，请求授权
          wx.authorize({
            scope: 'scope.userLocation',
            success() {
              that.requestLocation();
            },
            fail(err) {
              console.error('授权失败:', err);
              wx.showToast({
                title: '获取位置失败，请授权位置权限',
                icon: 'none'
              });
            }
          });
        } else {
          // 如果已经授权，直接获取位置
          that.requestLocation();
        }
      },
      fail(err) {
        console.error('获取设置失败:', err);
        wx.showToast({
          title: '获取位置失败',
          icon: 'none'
        });
      }
    });
  },
  // 请求位置信息
  requestLocation() {
    const that = this;
    wx.getLocation({
      type: 'gcj02',
      altitude: true,
      isHighAccuracy: true,
      highAccuracyExpireTime: 60000,
      timeout: 10000,
      success(res) {
        const latitude = res.latitude;
        const longitude = res.longitude;
        that.setData({ latitude, longitude });
        that.reverseGeocode(latitude, longitude);
        that.setMapMarker(latitude, longitude); 
      },
      fail(err) {
        console.error('获取位置失败:', err);
        wx.showToast({
          title: '获取位置失败',
          icon: 'none'
        });
      }
    });
  },
  // 逆地理编码方法->通过经纬度获取地点
  reverseGeocode(lat, lng) {
    this.qqmapsdk.reverseGeocoder({
      location: { latitude: lat, longitude: lng },
      success: res => {
        const { address } = res.result;
        this.setData({
          address: address || '未知地址'
        });
      },
      fail: err => {
        console.error('逆解析失败:', err);
        this.setData({ address: '地址解析失败' });
      }
    });
  },
  // 设置地图标记点
  setMapMarker(lat, lng) {
    this.setData({
      markers: [
        {
          id: 0,
          latitude: lat,
          longitude: lng,
          title: '我的位置',
          iconPath: '/resources/my_location.png',
          width: 30,  // 图标宽度
          height: 30  // 图标高度
        }
      ]
    });
  },

  // 二维码签到
  scancode() {
    wx.scanCode({
      success(res) {
        console.log(res);
        wx.showToast({
          title: '签到成功',
          icon: 'success',
          duration: 2000
        });
      },
      fail: (res) => {
        console.log(res);
        wx.showToast({
          title: '签到失败，请再次尝试或更换设备',
          icon: 'error',
          duration: 2000
        });
      }
    });
  },

  onReady() {},

  onShow() {},

  onHide() {},

  onUnload() {},

  onPullDownRefresh() {},

  onReachBottom() {},

  onShareAppMessage() {}
});